package com.yunwushanhe.controller;

import com.yunwushanhe.bean.req.TagAddReq;
import com.yunwushanhe.bean.req.TagPageReq;
import com.yunwushanhe.bean.req.TagUpdateReq;
import com.yunwushanhe.bean.ret.ResponseResult;
import com.yunwushanhe.bean.vo.PageVO;
import com.yunwushanhe.bean.vo.TagListVO;
import com.yunwushanhe.bean.vo.TagPageVO;
import com.yunwushanhe.bean.vo.TagUpdateVO;
import com.yunwushanhe.entity.Tag;
import com.yunwushanhe.service.TagService;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 标签(Tag)表控制层
 *
 * @author 抬头看看天
 * @since 2023-08-15 21:26:22
 */

@RestController
@RequestMapping("/content/tag")
public class TagController {

    @Resource
    private TagService tagService;

    @GetMapping("/list")
    public ResponseResult<PageVO<List<TagPageVO>>> list(TagPageReq pageReq){
        return tagService.getTagList(pageReq);
    }

    @PostMapping // 这个请求可以用 validation 优化一下
    public ResponseResult<Object> addTag(@RequestBody TagAddReq tagAddReq){
        return tagService.addTag(tagAddReq);
    }

    @DeleteMapping("/{id}") // 这个请求可以用 validation 优化一下
    public ResponseResult<Object> deleteTagById(@PathVariable("id") String id){
        return tagService.deleteTagById(id);
    }

    @GetMapping("/{id}") // 这个请求可以用 validation 优化一下
    public ResponseResult<TagUpdateVO> getTagById(@PathVariable("id") Long id){
        return tagService.getTagById(id);
    }

    @PutMapping // 这个请求可以用 validation 优化一下
    public ResponseResult<Object> updateTagById(@RequestBody TagUpdateReq updateReq){
        return tagService.updateTagById(updateReq);
    }

    @GetMapping("/listAllTag")
    public ResponseResult<List<TagListVO>> listAllTag(){
        return tagService.listAllTag();
    }

}

